﻿using System;
using System.Windows.Forms;
using VentaElectrodomesticos.AbmProducto;
using VentaElectrodomesticos.Sql;
using VentaElectrodomesticos.Utilities;
using System.Data.SqlClient;
using VentaElectrodomesticos.AbmUsuario;

namespace VentaElectrodomesticos.AsignacionStock
{
    public partial class FormAsignacionStock : Form
    {
        private ClaseSQL sql = new ClaseSQL();
        private KeyValuePair categoria;
        private String idEmpleado;
        private String idAnalista = "";


        public FormAsignacionStock(String id)
        {
            InitializeComponent();

            sql.llenarComboSimple(comboBoxSucursal, "SELECT idSucursal FROM LAG.sucursales");
            this.idEmpleado = id;
            this.asignarUsuario();
        }
        private void asignarUsuario()
        {
            try
            {
                sql.Open();
                String defaultquery = "SELECT a.idTipoUsu,a.idSucursal FROM LAG.usuarios a ";
                defaultquery += " LEFT JOIN LAG.personas b ON a.idPersona = b.idPersona";
                defaultquery += " LEFT JOIN LAG.provincias c ON c.idProvincia = b.idProvincia";
                defaultquery += " WHERE idUsuario = " + this.idEmpleado;
                SqlDataReader reader = sql.busquedaSQLDataReader(defaultquery);
                if (reader != null)
                {
                    reader.Read();
                    this.comboBoxSucursal.SelectedItem = reader[1].ToString();
                    if (reader[0].ToString() == "2")
                    {
                        this.comboBoxSucursal.Enabled = true;
                    }
                    else
                    {
                        this.comboBoxSucursal.Enabled = false;

                    }
                }
                reader.Close();
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.Message, "Error!");
            }
            finally
            {
                sql.Close();
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.idAnalista = "";
            this.textBoxNombreEmpleado.Clear();
            this.textBoxApellidoEmpleado.Clear();
            this.textBoxDni.Clear();

            this.textBoxNombreEmpleado.Enabled = true;
            this.textBoxApellidoEmpleado.Enabled = true;
            this.textBoxDni.Enabled = true;
        }

        private void button4_Click(object sender, EventArgs e)
        {
            this.textBoxIdProducto.Clear();
            this.textBoxnomProducto.Clear();
            this.textBoxCategoriaProducto.Clear();

            this.textBoxIdProducto.Enabled = true;
            this.textBoxnomProducto.Enabled = true;
            this.textBoxCategoriaProducto.Enabled = true;
        }

        private void button6_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void button7_Click(object sender, EventArgs e)
        {
            FormSeleccionCategoria formCategoria = new FormSeleccionCategoria(this, "asignacionDeStock");
            formCategoria.ShowDialog();
        }

        public void recibirCategoria(KeyValuePair _categoria)
        {
            this.textBoxCategoriaProducto.Text = _categoria.Value.ToString();
            this.categoria = _categoria;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.textBoxNombreEmpleado.Enabled = false;
            this.textBoxApellidoEmpleado.Enabled = false;
            this.textBoxDni.Enabled = false;
            try
            {
                sql.Open();

                String defaultquery = "SELECT b.nombre,b.apellido,b.dni,b.mail,b.idProvincia,a.idSucursal,a.idTipoUsu,a.idUsuario ";
                defaultquery += " FROM LAG.usuarios a left join LAG.personas b on a.idPersona = b.idPersona ";
                String query = agregarCondiciones(this.textBoxNombreEmpleado.Text,
                                                  textBoxApellidoEmpleado.Text,
                                                  textBoxDni.Text);
                query = defaultquery + query;
                SqlDataReader reader = sql.busquedaSQLDataReader(query);
                FormElegirAnalista formElegir = new FormElegirAnalista(this);
                while (reader.Read())
                {
                    formElegir.insertarFila(reader[7].ToString(), //id 
                                            reader[0].ToString(), //nombre
                                            reader[1].ToString(), //apellido 
                                            reader[2].ToString(), //dni
                                            reader[3].ToString(), //mail 
                                            reader[4].ToString(), //provincia
                                            reader[5].ToString(), //sucursal
                                            reader[6].ToString()); //tipo
                }
                formElegir.ShowDialog(this);
                reader.Close();
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.Message, "Error!");
            }
            finally
            {
                sql.Close();
            }

        }

        private string agregarCondiciones(String nombre, String apellido, String dni)
        {
            String condicion = " WHERE a.status = '1' AND b.status = '1' AND idTipoUsu = 3 ";

            if (!nombre.Equals(""))
            {
                condicion += " AND nombre LIKE '%" + nombre + "%'";
            }
            if (!apellido.Equals(""))
            {
                condicion += " AND apellido LIKE '%" + apellido + "%'";
            }
            if (!dni.Equals(""))
            {
                condicion += " AND dni = " + dni;
            }
            
            return condicion;
        }

        public void setAnalista(string id, string nombre, string apellido, string dni, string provincia, string sucursal, string tipo)
        {
            this.idAnalista = id;
            this.textBoxNombreEmpleado.Text = nombre;
            this.textBoxApellidoEmpleado.Text = apellido;
            this.textBoxDni.Text = dni;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.textBoxIdProducto.Enabled = false;
            this.textBoxnomProducto.Enabled = false;
            this.textBoxCategoriaProducto.Enabled = false;
            try
            {   sql.Open();
                String defaultquery = "SELECT idProducto,nomProducto,nomCategoria FROM LAG.productos a left join LAG.productos_categorias b on a.idCategoria = b.idCategoria";
                String query = this.agregarCondicionesProducto(this.textBoxIdProducto.Text
                                                , this.textBoxnomProducto.Text
                                                , this.textBoxCategoriaProducto.Text);
                query = defaultquery + query;
                SqlDataReader reader = sql.busquedaSQLDataReader(query);
                FormElegirProducto form = new FormElegirProducto(this);
                while (reader.Read())
                {
                    form.agregarProducto( reader[0].ToString()  //id
                                        , reader[1].ToString()  //nombre
                                        , reader[2].ToString());  //categoria
                }
                reader.Close();
                form.ShowDialog(this);
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.Message, "Error!");
            }
            finally
            {
                sql.Close();
            }
        }

        private String agregarCondicionesProducto(String IdProducto, String nomProducto, String categoria) {
            String condicion = " WHERE status = '1' ";
            if (this.textBoxIdProducto.Text != "") { 
                condicion += " AND idProducto = " + this.textBoxIdProducto.Text;
            }
            if (this.textBoxnomProducto.Text != "")
            {
                condicion += " AND idProducto LIKE '%" + this.textBoxnomProducto.Text + "%'";
            }
            if (this.textBoxCategoriaProducto.Text != "")
            {
                condicion += " AND b.nomCategoria = '" + this.textBoxCategoriaProducto.Text + "'";
            }
            return condicion;
        }

        public void setProducto(String id, String nombre, String categoria) {
            this.textBoxIdProducto.Text = id;
            this.textBoxnomProducto.Text = nombre;
            this.textBoxCategoriaProducto.Text = categoria;
        }

        private void button5_Click(object sender, EventArgs e)
        {
            if (this.idAnalista != ""){
                if (this.comboBoxSucursal.SelectedItem.ToString() != ""){
                    if (this.textBoxIdProducto.Text != "" && this.textBoxIdProducto.Enabled == false && this.textBoxCantidad.Text != "")
                    {
                        try
                        {
                            sql.Open();
                            String defaultquery = "INSERT INTO LAG.mov_stock VALUES (getdate()," + this.comboBoxSucursal.SelectedItem.ToString();
                            defaultquery += ", 'I', null, " + this.idAnalista + ",0 ," + this.textBoxIdProducto.Text + ", " + this.textBoxCantidad.Text + ")";
                            SqlDataReader reader = sql.busquedaSQLDataReader(defaultquery);
                            if (reader != null)
                            {
                                MessageBox.Show("El Ingreso fue registrado con éxito", "Success");
                                this.Close();
                            }
                        }
                        catch (SqlException ex)
                        {
                            MessageBox.Show(ex.Message + "\n" + ex.StackTrace, "Error!");
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message + "\n" + ex.StackTrace, "Error app");
                        }
                        finally
                        {
                            sql.Close();
                            this.Close();
                        }
                    }
                    else {
                        MessageBox.Show("faltan datos del producto", "Advertencia");
                    }
                }
                else{
                MessageBox.Show("falta seleccionar la Sucursal","Advertencia");
                }
            }
            else{
                MessageBox.Show("falta seleccionar el Analista","Advertencia");
            }
            
            
        }

        private void ingresarSoloNumericos(object sender, KeyPressEventArgs e)
        {
            if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), "[0-9\b]+"))
                e.Handled = true;
        }

        private void textBoxIdProducto_TextChanged(object sender, EventArgs e)
        {
            
        }

        private void comboBoxSucursal_SelectedIndexChanged(object sender, EventArgs e)
        {
           
        }


        
    }
}
